package com.yunnuo.system.role.service;

import com.yunnuo.system.comm.service.IBaseService;
import com.yunnuo.system.comm.util.page.TableDataInfo;
import com.yunnuo.system.role.entity.Role;
import com.yunnuo.system.users.entity.PageParams;
import org.springframework.data.domain.PageRequest;

import java.util.List;
import java.util.Set;

/**
 * Created by w_weihf on 2018/8/3.
 */
public interface  IRoleService extends IBaseService<Role> {

    /**
     * 根据用户ID查询角色
     *
     * @param userId 用户ID
     * @return 权限列表
     */
    public Set<String> selectRoleKeys(String userId);

    /**
     * 根据userId 查询用户所有权限
     * @param userId
     * @return
     */
    List<Role> selectRolesByUserId(String userId);

    /**
     * 查询所有的权限
     * 默认角色  在用户管理新增角色时   默认勾选
     * @return
     */
    List<Role> selectRoleAll();

    /**
     * 删除角色 根据角色ID
     * @return
     */
    int deleteRoleById(String roleId);

    /**
     * 修改用户时展示的角色信息，对flag进行处理
     * flag-true选中
     * @param userId
     * @return
     */
    List<Role> selectEditRole(String userId);

    /**
     * 分页查询
     * @param pageParams
     * @param pageRequest
     * @return
     */
    TableDataInfo selectRoleListByPageParams(PageParams pageParams, PageRequest pageRequest);

    String checkRoleNameUnique(Role role);

    /**
     * 保存角色及权限
     * @param role
     * @param menuIds
     */
    void save(Role role, String menuIds);
}
